#import "PedidoController.h"
#import "Produto.h"
#import "ProdutosController.h"
#import "PedidoPrintController.h"
#import "InfoControllerBase.h"

@interface PedidoController ()<UITableViewDataSource, UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UILabel *produtosLabel;
@property (weak, nonatomic) IBOutlet UILabel *dataLabel;
@property (weak, nonatomic) IBOutlet UILabel *fabricaLabel;
@property (weak, nonatomic) IBOutlet UILabel *totalLabel;
@property (weak, nonatomic) IBOutlet UILabel *clienteLabel;
@property (weak, nonatomic) IBOutlet UILabel *vendedorLabel;
@property (weak, nonatomic) IBOutlet UILabel *transportadoraLabel;
@property (strong, nonatomic) Fabrica* fabrica;
@property (strong, nonatomic) Vendedor* vendedor;
@property (strong, nonatomic) Transportadora* transportadora;
@end

@implementation PedidoController

@synthesize pedido;
@synthesize dataLabel;
@synthesize totalLabel;
@synthesize produtosLabel;
@synthesize clienteLabel;
@synthesize fabricaLabel;
@synthesize vendedorLabel;
@synthesize transportadoraLabel;
@synthesize cliente;
@synthesize repositoryProvider;
@synthesize fabrica;
@synthesize vendedor;
@synthesize transportadora;

-(void)showError:(NSError*)error {
    [[[UIAlertView alloc] initWithTitle:@"Erro" message:[error localizedDescription] delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] show];
}

-(void)viewDidLoad {
    [super viewDidLoad];

    self.title = [NSString stringWithFormat:@"Pedido %d", self.pedido.numero];
    
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"dd/MM/yy"];
    self.dataLabel.text = [dateFormatter stringFromDate:self.pedido.data];
    
     NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
    numberFormatter.currencyDecimalSeparator = @",";
    numberFormatter.currencyGroupingSeparator = @".";
    numberFormatter.currencySymbol = @"R$ ";
    self.totalLabel.text = [numberFormatter stringFromNumber:[NSNumber numberWithDouble:pedido.total]];
    
    self.produtosLabel.text = [NSString stringWithFormat:@"%d", self.pedido.totalPecas];
    self.clienteLabel.text = self.cliente.razaoSocial;
    
    NSError* error;

    self.fabrica = [[self.repositoryProvider getRepositoryForClass:[Fabrica class]] getModelById:self.pedido.fabricaId error:&error];
    if (error) {
        [self showError:error];
        return;
    }
    self.fabricaLabel.text = self.fabrica.text;
    
    self.vendedor = [[self.repositoryProvider getRepositoryForClass:[Vendedor class]] getModelById:self.pedido.vendedorId error:&error];
    if (error) {
        [self showError:error];
        return;
    }
    self.vendedorLabel.text = self.vendedor.text;

    self.transportadora = [[self.repositoryProvider getRepositoryForClass:[Transportadora class]] getModelById:self.pedido.transportadoraId error:&error];
    if (error) {
        [self showError:error];
        return;
    }
    self.transportadoraLabel.text = self.transportadora.text;
}

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if ([segue.identifier isEqualToString:@"toProdutos"]) {
        ProdutosController* produtosController = (ProdutosController*)segue.destinationViewController;
        produtosController.produtos = self.pedido.produtos;
    } else if ([segue.identifier isEqualToString:@"toPrint"]) {
        PedidoPrintController* pedidoPrintController = (PedidoPrintController*)segue.destinationViewController;
        pedidoPrintController.pedido = self.pedido;
        pedidoPrintController.repositoryProvider = self.repositoryProvider;
        pedidoPrintController.title = self.title;
    } else if ([segue.destinationViewController isKindOfClass:[InfoControllerBase class]]) {
        InfoControllerBase* infoControllerBase = (InfoControllerBase*)segue.destinationViewController;
        infoControllerBase.repositoryProvider = self.repositoryProvider;
        if ([segue.identifier isEqualToString:@"toClienteInfo"]) {
            infoControllerBase.model = self.cliente;
        } else if ([segue.identifier isEqualToString:@"toFabricaInfo"]) {
            infoControllerBase.model = self.fabrica;
        } else if ([segue.identifier isEqualToString:@"toVendedorInfo"]) {
            infoControllerBase.model = self.vendedor;
        } else if ([segue.identifier isEqualToString:@"toTransportadoraInfo"]) {
            infoControllerBase.model = self.transportadora;
        }
    }
}

@end